export const func = (arr) => {
    const len = arr.length
    const res = [] // 所有排列结果
    /**
       * 【全排列算法】
       * 说明：arrange用来对arr中的元素进行排列组合，将排列好的各个结果存在新数组中
       * @param tempArr：排列好的元素
       * @param leftArr：待排列元素
       */
    const arrange = (tempArr, leftArr) => {
      if (tempArr.length === len) { // 这里就是递归结束的地方
        // res.push(tempArr) // 得到全排列的每个元素都是数组
        // res.push(tempArr.join('')) // 得到全排列的每个元素都是字符串
        res.push(tempArr)
      } else {
        leftArr.forEach((item, index) => {
          const temp = [].concat(leftArr)
          temp.splice(index, 1)
          // 此时，第一个参数是当前分离出的元素所在数组；第二个参数temp是传入的leftArr去掉第一个后的结果
          arrange(tempArr.concat(item), temp) // 这里使用了递归
        })
      }
    }
    arrange([], arr)
    return res
  }